package com.yc.user.service;

import cn.dev33.satoken.stp.SaTokenInfo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yc.base.BaseService;
import com.yc.domain.LoginUserDto;
import com.yc.enums.StatusEnum;
import com.yc.user.entity.User;
import com.yc.user.vo.UserVo;

import java.util.List;

/**
 * <p>
 * 后台用户表 服务类
 * </p>
 *
 * @author bao
 * @since 2021-12-08
 */
public interface IUserService extends BaseService<User> {

    UserVo create(User user, List<Long> roleIds);

    boolean createBatch(List<User> userList);

    boolean delete(List<Long> ids);

    UserVo update(User user, List<Long> roleIds);

    UserVo queryById(Long id);

    List<User> selectList();

    IPage<UserVo> selectPage(IPage<User> page, String username, List<Long> roleIdList, Long postId, StatusEnum statusEnum);

    /**
     * 根据用户名获取用户
     */
    User queryByUsername(String username);

    /**
     * 根据用户名获取JWT用户详情
     */
    LoginUserDto loadUserByUsername(String username);

    /**
     * 登录
     * @return
     */
    SaTokenInfo login(String username, String password);

    /**
     * 修改上次登录时间
     */
    boolean updateLastLoginTime(Long id);

    /**
     * 修改用户密码
     */
    int updatePassword(Long uid, String oldPassword, String newPassword);

}
